﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SIMCObjetoNegocio;

namespace SIMCRepositorio
{
    public class RepositorioCalificador : Database, IRepositorioCalificador
    {
        public List<CalificadorDeAtributo> Buscar(string p_Atributo, string p_Tipo)
        {
            try
            {
                IRepositorioAtributo repAtributo = DatabaseAccess.AtributoRepositorio;

                var query = from calificador in Context.cla_calificador
                            where calificador.cas_satributo == p_Atributo
                            && calificador.cas_scodigo.Substring(0, 1) == p_Tipo
                            select new CalificadorDeAtributo
                            {
                                _Id = calificador.cas_scodigo,
                                Descripcion = calificador.cas_sdescripcion,
                                CodigoAtributoDeValores = calificador.cas_satr_asoc,
                                ValorPorDefecto = calificador.cas_svaldef,
                                EditMask = calificador.cas_smascara,
                                _TipoDato = calificador.cas_ctpcalif                                
                            };

                List<CalificadorDeAtributo> lista = query.ToList();

                if (lista != null)
                {
                    foreach (CalificadorDeAtributo calif in lista)
                    {
                        if (calif.TipoDato == TipoDeDato.ListaDeValores)
                        {
                            calif.AtributoDeValores = repAtributo.Buscar(calif.CodigoAtributoDeValores);
                        }
                    }
                }

                return lista;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }

    public interface IRepositorioCalificador
    {
        List<CalificadorDeAtributo> Buscar(string p_Atributo, string p_Tipo);
    }
}
